# demo04_oop_func.py
# 特殊方法(魔术方法)
# __init__: 在创建对象之后调用的方法，称为初始化方法或者构造方法
# __str__: 修改直接打印 对象 展示的内容, 返回值是字符串
# __call__: 将对象当成函数一样调用，会执行__call__方法的逻辑
class Book:
    def __init__(self, title, author):
        self.title = title
        self.author = author
    def __str__(self):
        return "Book(title: %s, author: %s)" % (self.title, self.author)
    def __call__(self):
        print("hello world~")
if __name__ == '__main__':
    b1 = Book("Python", "zhangsan")
    print(b1)  # Book(title: Python, author: zhangsan)
    b1()  # b1() -> 执行的逻辑就是__call__的逻辑



